<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="generator" content="pandoc">
  <meta name="author" content="滨州学院">
  <title>实用软件工程</title>
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
  <link rel="stylesheet" href="reveal.js/css/reset.css">
  <link rel="stylesheet" href="reveal.js/css/reveal.css">
  <style>
      code{white-space: pre-wrap;}
      span.smallcaps{font-variant: small-caps;}
      span.underline{text-decoration: underline;}
      div.column{display: inline-block; vertical-align: top; width: 50%;}
  </style>
  <link rel="stylesheet" href="reveal.js/css/theme/white.css" id="theme">
  <!-- Printing and PDF exports -->
  <script>
    var link = document.createElement( 'link' );
    link.rel = 'stylesheet';
    link.type = 'text/css';
    link.href = window.location.search.match( /print-pdf/gi ) ? 'reveal.js/css/print/pdf.css' : 'reveal.js/css/print/paper.css';
    document.getElementsByTagName( 'head' )[0].appendChild( link );
  </script>
  <!--[if lt IE 9]>
  <script src="reveal.js/lib/js/html5shiv.js"></script>
  <![endif]-->
</head>
<body>
  <div class="reveal">
    <div class="slides">

<section id="title-slide">
  <h1 class="title">实用软件工程</h1>
  <p class="subtitle">CH05 软件实现</p>
  <p class="author">滨州学院</p>
</section>

<section id="学习目标" class="slide level2">
<h2>学习目标</h2>
<ul>
<li>掌握：程序复杂性的度量方法；</li>
<li>熟悉：源程序设计风格。</li>
</ul>
</section>
<section><section id="程序设计语言选择" class="title-slide slide level1"><h1>5.1 程序设计语言选择</h1></section><section id="编码和程序设计语言" class="slide level2">
<h2>编码和程序设计语言</h2>
<ul>
<li>程序编码的任务是将软件的设计转换成用程序设计语言实现的程序代码。</li>
<li>程序的质量主要取决于软件设计的质量。</li>
<li>所选用的程序设计语言的特点及编码风格也将对程序的可靠性、可读性、可测试性和可维护性产生较大的影响。</li>
</ul>
</section><section id="程序设计语言的选择" class="slide level2">
<h2>程序设计语言的选择</h2>
<ul>
<li>项目的应用范围:选取适合某个应用领域的语言</li>
<li>算法和计算复杂性:适应项目算法和计算复杂性</li>
<li>软件执行的环境:机器上能运行且具有相应支持软件</li>
<li>性能上的考虑:系统对性能、实时性等方面的要求</li>
<li>数据结构的复杂性:构造数据结构类型的能力</li>
<li>件开发人员的知识水平等:专业知识、程序设计能力、对开发平台的熟悉程度</li>
</ul>
</section></section>
<section><section id="结构化程序设计" class="title-slide slide level1"><h1>5.2 结构化程序设计</h1></section><section id="结构化程序设计的原则" class="slide level2">
<h2>结构化程序设计的原则</h2>
<ul>
<li>程序结构是按功能划分为若干个基本模块</li>
<li>各模块之间关系尽可能简单，在功能上相对独立</li>
<li>使用顺序、选择、循环等基本控制结构表示程序逻辑</li>
<li>控制结构只准许有一个入口和一个出口</li>
<li>程序语句组成容易识别的模块，每个模块必须有一个入口和一个出口</li>
<li>复杂结构应该用基本控制结构组合嵌套来实现</li>
<li>严格控制 GOTO 语句的使用</li>
</ul>
</section><section id="程序设计自顶向下逐步求精" class="slide level2">
<h2>程序设计自顶向下、逐步求精</h2>
<ul>
<li>适合人们解决复杂问题的普遍规律，可提高软件开发的成功率和生产率。</li>
<li>具有清晰的层次结构，程序容易阅读和理解。</li>
<li>形成一个树状结构，在同一层的节点上所做的细化工作相互独立，便于测试。</li>
<li>程序清晰和模块化，可重用代码量最大。</li>
<li>每一步仅在上层节点的基础上做不多的设计扩展，便于检查。</li>
<li>有利于设计的分工和组织工作。</li>
</ul>
</section></section>
<section><section id="源程序设计风格" class="title-slide slide level1"><h1>5.3 源程序设计风格</h1></section><section id="源程序文档化" class="slide level2">
<h2>1. 源程序文档化</h2>
<ul>
<li>标识符命名准则
<ul>
<li>见名知意；短小精炼；一种用途</li>
</ul></li>
<li>程序的注释
<ul>
<li>序言性注释；解释性注释</li>
</ul></li>
<li>书写格式
<ul>
<li>空格；空行；缩进；对齐；</li>
</ul></li>
</ul>
</section><section id="语句结构" class="slide level2">
<h2>2. 语句结构</h2>
<ul>
<li>尽量采用直接、简单、清晰的构造方式</li>
<li>不要为了提高效率或者显示技巧而降低程序的清晰性和可读性</li>
</ul>
</section><section id="数据说明" class="slide level2">
<h2>3. 数据说明</h2>
<ul>
<li>数据说明次序规范化</li>
<li>一次说明多个变量时按字母顺序排列</li>
<li>复杂的数据结构使用注释说明</li>
<li>复杂的数据说明放在一个说明文件中</li>
</ul>
</section><section id="输入和输出" class="slide level2">
<h2>4. 输入和输出</h2>
<ul>
<li>检验输入数据，保证有效性</li>
<li>检查输入项各种组合的合理性</li>
<li>适当缓冲，避免频繁的信息交换</li>
<li>输入操作简单，格式简单</li>
<li>允许使用自由格式输入</li>
<li>批量输入时使用结束标志</li>
<li>明确的提示信息</li>
<li>区分必填和选填项</li>
<li>保持输入格式和输入语句要求一致</li>
<li>设计良好的输出报表</li>
</ul>
</section><section id="效率" class="slide level2">
<h2>5. 效率</h2>
<ul>
<li>提高效率的准则</li>
<li>提高效率的指导原则</li>
</ul>
</section></section>
<section><section id="程序复杂性度量" class="title-slide slide level1"><h1>5.4 程序复杂性度量</h1></section><section id="section" class="slide level2">
<h2></h2>
<ul>
<li>McCabe 度量方法</li>
<li>Halstead 度量方法</li>
</ul>
</section></section>
<section id="软件实现文档" class="title-slide slide level1"><h1>5.5 软件实现文档</h1></section>
    </div>
  </div>

  <script src="reveal.js/js/reveal.js"></script>

  <script>

      // Full list of configuration options available at:
      // https://github.com/hakimel/reveal.js#configuration
      Reveal.initialize({
        // Push each slide change to the browser history
        history: true,

        // Optional reveal.js plugins
        dependencies: [
          { src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
          { src: 'reveal.js/plugin/zoom-js/zoom.js', async: true },
          { src: 'reveal.js/plugin/notes/notes.js', async: true }
        ]
      });
    </script>
    </body>
</html>
